On Start Event
data class OnStartEvent(val prompt: String?, val priorMessages: List<ModelMessage>, val options: Any?)
Lifecycle hook event types (best practice #10). Hooks are observation points — they do NOT modify behavior. If a hook needs to influence the loop, the right place is PrepareStepScope / PrepareCallScope.
Hook failures do not crash the loop — they're logged via OnErrorEvent. Tool and prepareStep failures DO crash the loop (those are real errors).